#!/bin/sh
# Jenkins容器内Docker一键安装脚本（适配Debian/Ubuntu系Jenkins镜像）

# 切换到root用户（Jenkins容器默认是jenkins用户，需root权限）
if [ "$(id -u)" != "0" ]; then
    echo "=== 切换到root用户执行 ==="
    if command -v sudo >/dev/null 2>&1; then
        sudo -i "$0" "$@"
        exit $?
    elif [ -f /bin/bash ]; then
        su - root -c "/bin/bash $0 $@"
        exit $?
    else
        su - root -c "sh $0 $@"
        exit $?
    fi
fi

# 1. 补全基础依赖（Jenkins容器精简版缺失的工具）
echo "=== 安装基础依赖包 ==="
apt update -y && apt install -y \
    bash curl gnupg apt-transport-https ca-certificates lsb-release \
    software-properties-common

# 2. 下载Docker安装脚本到本地（避免进程替换兼容性问题）
echo "=== 下载Docker安装脚本 ==="
DOCKER_SCRIPT="/tmp/docker_install.sh"
curl -f -s --connect-timeout 10 --retry 3 \
    https://linuxmirrors.cn/docker.sh -o "$DOCKER_SCRIPT"

# 3. 赋予执行权限并执行安装
echo "=== 执行Docker安装脚本 ==="
chmod +x "$DOCKER_SCRIPT"
/bin/bash "$DOCKER_SCRIPT" \
    --source mirrors.tencent.com/docker-ce \
    --source-registry docker.1ms.run \
    --protocol https \
    --install-latested true \
    --close-firewall false \
    --ignore-backup-tips

# 4. 配置Jenkins用户Docker权限（避免后续执行docker命令权限不足）
echo "=== 配置Jenkins用户Docker权限 ==="
if id "jenkins" >/dev/null 2>&1; then
    usermod -aG docker jenkins
    echo "已将jenkins用户加入docker组，需重启容器生效！"
fi

# 5. 清理临时文件
rm -f "$DOCKER_SCRIPT"

echo "=== Docker安装完成 ==="
echo "验证Docker状态："
docker --version
systemctl status docker || service docker status